<?php

require_once PATH_CLASS.'saison.class.php';
require_once PATH_CLASS.'image.class.php';

class equipe extends table{
    CONST TABLE_NAME  = 't_equipes';
    CONST PRIMARY_KEY = 'equipe_id';
    
    var $equipe_id;
    var $equipe_nom;
    var $equipe_responsable;
    var $equipe_mail;
    var $equipe_photo;
    var $equipe_devise;
    var $equipe_site;
    var $equipe_couleur;
    var $equipe_histo;
    var $equipe_fake;

  /**
  *
  * @param array $array
  * @return equipe 
  */
  public function __construct($array) {
    parent::__construct($array);
    return $this;
  }
  
  public static function getEquipes($where=array(),$orderBy=array(),$join=array()){
    
    $db = self::getDb(); /* @var $db DataBase */
    
    $sql = sprintf('select t_e.* from %s as t_e',self::TABLE_NAME);
    
    if(!is_array($where) && !empty($where)){
      $where = array($where);
    }
    
    if(is_array($where) && count($where)>0){
      $where = sprintf("where %s",join(' AND ', $where));
    } else $where ='';

    if(!is_array($orderBy) && !empty($orderBy)){
      $orderBy = array($orderBy);
    }
    
    if(is_array($orderBy) && count($orderBy)>0){
      $orderBy = sprintf("order by %s",join(' AND ', $orderBy));
    } else $orderBy ='';

    if(!is_array($join) && !empty($join)){
      $join = array($join);
    }
    
    if(is_array($join) && count($join)>0){
      $join = join(' ', $join);
    } else $join ='';
    
    $sql  = "$sql $join $where $orderBy";
    
    $db->select($sql);
    $ret=array();
    while($row=$db->Next()){
      $ret[]=new equipe($row);
    }
    return $ret;
  }
  
  
  
  public static function getEquipesBy($colName,$colValue){
    
    $equipe = self::getEquipes(array("`$colName`=\"$colValue\""));
    if(is_array($equipe)){
      $equipe =  count($equipe)>0 ? $equipe[0] : null;
    }
    
    return $equipe;
  }
  
  public static function getEquipe($equipe_id){
    
    $equipe = self::getEquipesBy('equipe_id',$equipe_id);
    if(is_array($equipe)){
      $equipe =  count($equipe)>0 ? $equipe[0] : null;
    }
    
    return $equipe;
  }
  public static function getEquipeByName($equipe_name){
    
    $equipe = self::getEquipesBy("equipe_nom",urldecode($equipe_name));
    if(is_array($equipe)){
      $equipe = $equipe[0];
    }
    
    return $equipe;
  }
  
  public function getSaisons(){
    $db = self::getDb();
    
    $sql = "select * from t_liens_es as t_es 
    inner join t_equipes as t_e using(equipe_id) 
    inner join t_saisons_type as t_st using (saison_type) 
    inner join t_saisons as t_s using (saison_id)
    where t_e.equipe_id=%d order by saison_id desc";
    
    $sql = sprintf($sql,$this->equipe_id);
    
    $ret = $db->selectAllBy($sql,'saison_id');
    
    if(!is_array($ret)){
      $ret = array();
    }
    
    return $ret;
  }

  public function getCoachs($saison_id = 0){
    $db = self::getDb();
    
    $sql = "select * from t_liens_ec inner join t_equipes as t_e using (equipe_id) 
    inner join t_saisons as t_s using (saison_id)
    inner join t_membres as t_m using (membre_id)
    where %s order by saison_id desc";
    
    $where[] =  "t_e.equipe_id={$this->equipe_id}";
    $by = 'saison_id,membre_id';
    
    if(is_int($saison_id) && $saison_id!=0){
      $where[] = "saison_id = $saison_id";
      $by = 'membre_id';
    }
    
    $sql = sprintf($sql,join(' AND ',$where));
    
    $ret = $db->selectAllBy($sql,$by);
    
    if(!is_array($ret)){
      $ret = array();
    }
    
    return $ret;
  }
  
  public function getMembres($saison_id = 0){
    $db = self::getDb();
    
    $sql = "select * from t_liens_mes 
    inner join t_equipes as t_e using (equipe_id) 
    inner join t_saisons as t_s using (saison_id)
    inner join t_membres as t_m using (membre_id)
    where %s order by saison_id desc";
    
    $where[] =  "t_e.equipe_id={$this->equipe_id}";
    $by = 'saison_id,membre_id';
    
    if(is_int($saison_id) && $saison_id!=0){
      $where[] = "saison_id = $saison_id";
      $by = 'membre_id';
    }
    
    $sql = sprintf($sql,join(' AND ',$where));
    
    $ret = $db->selectAllBy($sql,$by);
    
    if(!is_array($ret)){
      $ret = array();
    }
    
    return $ret;
  }
  
  public static function getEquipesBySaison($saison_id=0){
    if($saison_id==0){
      $saison_id = saison::getCurrentId();
    }
    $equipes = self::getEquipes(array("t_es.saison_id = $saison_id"),null,array('LEFT JOIN t_liens_es as t_es USING(equipe_id)'));
    return $equipes;
  }
  
  public function getSaisonType($saison_id=0){
    
    $db = self::getDb();
    
    $where[]="equipe_id = ".$this->equipe_id;
    
    $with=false;
    
    if(isset($saison_id) && !empty($saison_id)){
      $where[] = "saison_id = $saison_id";
      $with=true;
    }
    
    $where = join(' AND ', $where);
    
    $sql = "select * from t_liens_es where $where";
    
    $ret = $db->selectAllBy($sql,'saison_id');
    
    if($with){
      $ret = array_shift($ret);
      $ret = $ret['saison_type'];
    }
    
    return $ret;
  }
  
  public function isActive($saison_id=0){
    if($saison_id==0){
      $saison_id = saison::getCurrentId();
    }
    $db = self::getDb();
    
    $sql =sprintf("select count(*) from t_liens_es where equipe_id=%d and saison_id=%d",$this->equipe_id,$saison_id);
    
    return ($db->Count($sql)!=0);
  }
  
  public function getCompet($saison_id=null){
    $db  = parent::getDb();
    
    if(empty($saison_id)) $saison_id = saison::getCurrentId ();
    
    $sql = sprintf("select saison_type from t_liens_es where equipe_id=%d and saison_id=%d",$this->equipe_id,$saison_id);
    
    $res = $db->SelectFirst($sql);
    
    if($res==null || !isset($res['saison_type'])){
      $res['saison_type']=FALSE;
    }
    
    return $res['saison_type'];
  }
  
  static function getLink($id,$text='',$pars=array()){

    $defPars = array(
        'addImg'=>false
       ,'imageSize' => 'miniature'
       ,'class'=>''
       ,'lib'=>'%nom%'
       ,'truncate'=>0
       ,'jQuery'=>true      
       ,'unknown'=>'Aucune équipe'      
       ,'link'=>true      
      );

      $p = array_merge($defPars,$pars); 

      if($id == 0 && !($id instanceof equipe)){
        return $p['unknown'];
      }

      if($id instanceof equipe){
        $equipe = $id;
      } else {
        $equipe = self::getEquipe($id);
      }

      if(is_null($equipe)){
        return $p['unknown'];
      }    

      $texte = empty($text) ? $p['lib'] : $text;

      $texte = str_replace('%nom%', $equipe->equipe_nom,$texte);

      if(isset($p['more'])){
        $texte .= ' '.$p['more'];
      }

      if(isset($p['truncate']) && $p['truncate']>0){
        if(strlen($texte)>$p['truncate']){
          $texte = substr($texte, 0, $p['truncate']-3).'...';
        }
      }

      if($p['jQuery']==true){
        $url = "./#!/equipe/".urlencode($equipe->equipe_nom)."/id/{$id}";
        $p['class'] =trim('equipe-link ' . $p['class']);
      } else {
      //    $page = 'souvenir';
      //    $point= 'fame';
      //    $url = SITE_URL . "index.php?page=$page&point=$point&membre=$id";
      }

      if(isset($p['addImg']) && $p['addImg']){
        $texte = '<span class="img">'.image::getDynImgHTML($id,'equipe',array("size"=>$p['imageSize'])).'</span><span class="lib">'.$texte.'</span>';
        $p['class'] = trim('equipe-image '.$p['class']);
      }
      
      if($equipe->equipe_fake){
          $p['link'] = false;
      }
      
      $ret = $p['link'] ? '<a href="'.$url.'" class="'.$p['class'].'">'	. $texte  . '</a>' : $texte;
      
    return $ret;

  }
}

